home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 52 / Amiga Format AFCD52 (Issue 136, May 2000).iso / -serious- / hardware / ahd12 / speed / speed.c < prev   
C/C++ Source or Header  |  2000-02-28  |  2KB  |  63 lines

  1. #include <stdio.h>
  2. #include <dos.h>
  3. #include <exec/memory.h>
  4. #include <proto/dos.h>
  5. #include <proto/exec.h>
  6.  
  7. void main()
  8. {
  9. long f;
  10. char *buff, t1[8], t2[8];
  11. long time1, time2, i, iter, size;
  12. double ksec;
  13.  
  14.   printf("Enter block size in Kbytes->"); /* get buffer size for io */
  15.   scanf("%ld\n", &size);
  16.   size = size * 1024;
  17.   printf("Enter number of iterations ->"); /* get number of iterations */
  18.   scanf("%ld\n", &iter);                   /* to use buffer per operation */
  19.   printf("Block size, interations = %ld, %ld\n", size, iter);
  20.   buff = (char *)AllocMem(size, MEMF_CLEAR);
  21.   if (buff == 0) {              /* alloc failed so exit */
  22.     printf("Not enough contigious memory; block size = %ld\n", size);
  23.     exit();
  24.   }
  25.  
  26.   f = Open("test.file", MODE_NEWFILE);
  27.  
  28.   getclk(t1);  /* get system time */
  29.   for (i = 0; i < iter; i++)
  30.     Write(f, buff, size);
  31.   getclk(t2);
  32.  
  33. /* the getclk call returns an char array[8], where array[5] is minutes,
  34.    array[6] is seconds, and array[7] is hundredths of seconds */
  35.   time1 = t1[5] * 6000 + t1[6] * 100 + t1[7];
  36.   time2 = t2[5] * 6000 + t2[6] * 100 + t2[7];
  37.   ksec = (double)(((double)(size * iter) / (double)(time2 - time1))
  38.     * 100.0) / 1024.0; /* convert elapsed time to k/second */
  39.   printf("elapsed time for write = %ld, K/sec = %10.4f\n",
  40.      (time2 - time1), ksec);
  41.   Close(f);
  42.  
  43.   Delay(100);  /* give file system time to settle before next test */
  44.                /* didn't know if I needed this, but just in case */
  45.  
  46.   f = Open("test.file", MODE_OLDFILE);
  47.  
  48.   getclk(t1);
  49.   for (i = 0; i < iter; i++)
  50.     Read(f, buff, size);
  51.   getclk(t2);
  52.  
  53.   time1 = t1[5] * 6000 + t1[6] * 100 + t1[7];
  54.   time2 = t2[5] * 6000 + t2[6] * 100 + t2[7];
  55.   ksec = (double)(((double)(size * iter) / (double)(time2 - time1))
  56.     * 100.0) / 1024.0;  /* convert elapsed time to k/second */
  57.   printf("elapsed time for read = %ld, K/sec = %10.4f\n",
  58.      (time2 - time1), ksec);
  59.   Close(f);
  60.   DeleteFile("test.file");  /* get rid of the temp file */
  61.   FreeMem(buff, size);
  62. }
  63.